package com.xuelang.pipeline.artifact.app.harborv2.response;

import com.xuelang.pipeline.artifact.app.harborv2.xo.CVEAllowlist;
import com.xuelang.pipeline.artifact.app.harborv2.xo.ProjectMetadata;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.OffsetDateTime;
import java.util.List;

/**
 * @author xiwen.zxg
 * @since 2024/7/11
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ListProjectResponse {
    /**
     * The creation time of the project.
     */
    private OffsetDateTime creationTime;
    /**
     * The role ID with highest permission of the current user who triggered the API (for UI).
     * This attribute is deprecated and will be removed in future versions.
     */
    private Long currentUserRoleID;
    /**
     * The list of role ID of the current user who triggered the API (for UI)
     */
    private List<Long> currentUserRoleIDS;
    private CVEAllowlist cveAllowlist;
    /**
     * A deletion mark of the project.
     */
    private Boolean deleted;
    private ProjectMetadata metadata;
    /**
     * The name of the project.
     */
    private String name;
    /**
     * The owner ID of the project always means the creator of the project.
     */
    private Long ownerID;
    /**
     * The owner name of the project.
     */
    private String ownerName;
    /**
     * Project ID
     */
    private Long projectID;
    /**
     * The ID of referenced registry when the project is a proxy cache project.
     */
    private Long registryID;
    /**
     * The number of the repositories under this project.
     */
    private Long repoCount;
    /**
     * Correspond to the UI about whether the project's publicity is  updatable (for UI)
     */
    private Boolean togglable;
    /**
     * The update time of the project.
     */
    private OffsetDateTime updateTime;
}
